迴圈是電腦科學運算領域的用語,也是一種常見的控制流程。迴圈是一段在程式中只出現一次,但可能會連續執行多次的程式碼。迴圈中的程式碼會執行特定的次數,或者是執行到特定條件成立時結束迴圈,或者是針對某一集合中的所有項目都執行一次。 - 維基百科
while loop
:$ irb
counter = 1 # 起始值
while counter <= 10 # 結束值
puts " 第 #{counter} 圈"
counter += 1 # 條件,如果沒有設定條件可能造成無窮迴圈
end
times
/ upto
/ downto
:times
,寫起來就像「我要做 幾次
這件事」:$ irb
3.times do
puts "很重要所以說三次"
end
很重要所以說三次
很重要所以說三次
很重要所以說三次
# 或是依序列出
1.upto(3) do |i| # 這裡的小括號()是可以省略的
puts " 很重要所以說 #{i} 次 "
end
很重要所以說 1 次
很重要所以說 2 次
很重要所以說 3 次
在 Ruby 裡方法後面的小括號()可以省略,也可以寫成這樣 1.upto 3
。
疊代是重複回饋過程的活動,其目的通常是為了接近併到達所需的目標或結果。每一次對過程的重複被稱為一次「疊代」,而每一次疊代得到的結果會被用來作為下一次疊代的初始值。 - 維基百科
Each
:song
給音符陣列,將陣列裡的元素一一印出,但我希望它看起來有點聲音,在 每個
音符後面加上「~」,這時候我們可以用 each
一次到位,畢竟如果整首曲子都要加,可能會加到翻桌:$ irb
song = ["do", "re", "mi", "fa", "so"]
.each do |note|
p "#{note}~"
end
do~
re~
mi~
fa~
so~
Select
:$ irb
(1..42).select { |num| num % 7 == 0 }
# 挑出 7 的倍數
=> [7, 14, 21, 28, 35, 42]
Map
:$ irb
(1..10).map {|num| num ** 2} # 列出 1 到 10 的平方數
=> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Reduce
:$ irb
(1..10).reduce { |sum, n| sum + n ** 2} # 列出 1 到 10 的平方數總和
=> 385
Select / Map / Reduce 是操作集合好用的方法,並且可以接其他的方法或判斷,這裡的花括號 {}
我們稱做 Block
用起來跟 do..end
差不多,以程式碼的可讀性來說並沒有好壞分別,但大括號的優先順序較高,有時候會造成不同結果,之後再分享 block
篇。
參考資料:
為你自己學 Ruby on Rails
此文同步刊登於CJ-Han的網站